import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 自动导入vue中hook reactive ref等
import AutoImport from "unplugin-auto-import/vite"
//自动导入ui-组件 比如说ant-design-vue  element-plus等
import Components from 'unplugin-vue-components/vite';


import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'

import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 为 Element Plus 按需引入样式。
//@ts-ignore 取消单行ts验证
import ElementPlus from 'unplugin-element-plus/vite'
// import legacyPlugin from '@vitejs/plugin-legacy'
import { fileURLToPath, URL } from 'node:url'

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    //vue3 vite配置热更新不用手动刷新
    hmr: true,
    port:8080,
    host:"0.0.0.0",
    proxy: { // 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
      // 正则表达式写法
      '^/api': {
        target: 'https://engine3.bjblackhole.com', // 后端服务实际地址
        // target: 'http://192.168.0.190:8087', // 后端服务实际地址
        // target: 'http://172.1.2.144:3002', // 后端服务实际地址
        changeOrigin: true, //开启代理
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },
  plugins: [
    vue(),
    AutoImport({
      //安装两行后你会发现在组件中不用再导入ref，reactive等
      imports: ['vue', 'vue-router'],
      resolvers: [
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({
          prefix: 'Icon'
        })
      ],
      //存放的位置
      dts: "src/auto-import.d.ts",

    }),
    Components({
      // 引入组件的,包括自定义组件
      resolvers: [
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({
          enabledCollections: ['ep']
        })
      ],
      // 存放的位置
      dts: "src/components.d.ts",
    }),
    ElementPlus({
      // options
    }),
    // 自动导入图标组件
    Icons({
      autoInstall: true,
    }),
    // legacyPlugin({
    //   targets: ['chrome 52'],  // 需要兼容的目标列表，可以设置多个
    //   additionalLegacyPolyfills: ['regenerator-runtime/runtime'] // 面向IE11时需要此插件
    // })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
    extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'] 
  },
  
  css: {
    preprocessorOptions: {
      // 全局样式引入
      scss: {
        additionalData: '@import "./src/assets/styles/common.scss";',
        // additionalData: '@import "/src/assets/styles/common.scss";',
        javascriptEnabled: true
      }
    }
  },
  // base:"/eco/",
  base:"/qzs",
  build: {
    emptyOutDir:true,
    minify: 'terser',
    target: 'es2015',
    outDir: 'dist',
    assetsDir:'assets/',
    terserOptions: {
      compress: {
        keep_infinity: true,
        // Used to delete console in production environment
        drop_console: true,
      },
    },
    chunkSizeWarningLimit: 2000,
  },
})
